package com.skh.math;

import javax.annotation.Resource;

/**
 * @Author: skh
 * @Date: 2020/3/23 10:18
 * @Description: 求1+2+…+n
 */
public class SumNums {
    /**
     * 求 1+2+...+n ，要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句（A?B:C）。
     */

    /**
     * 示例 1：
     *
     * 输入: n = 3
     * 输出: 6
     * 示例 2：
     *
     * 输入: n = 9
     * 输出: 45
     */
    /*
    利用 && 和 || 的短路特性
    对于A && B，如果A为假，那么就不执行B了;而如果A为真，就会执行B。
    对于A || B，如果A为真，那么就会不执行B了;而如果A为假，就会执行B。
     */
    public int sumNums(int n) {
        int sum = n;
        // && 短路与 n > 0为假时，不会再进行后面的判断，递归终止
        boolean res = (n > 0) && ((sum += sumNums(n - 1)) > 0);
        return sum;
    }

    public static void main(String[] args) {
        SumNums sumNums = new SumNums();
        int sum1 = sumNums.sumNums(3);
        System.out.println("sum1 = " + sum1);

        int sum2 = sumNums.sumNums(9);
        System.out.println("sum2 = " + sum2);
    }
}
